/*
 * @Descripttion: 写点什么
 * @version: 
 * @Author: Zhaocy
 * @Date: 2024-07-31 09:59:13
 * @LastEditors: Zhaocy
 * @LastEditTime: 2024-07-31 17:56:57
 */
package com.zhike.mapper.friends;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhike.common.dto.UserRosterVO;
import com.zhike.common.model.Roster;
import com.zhike.common.vo.FriendRequestVO;
import com.zhike.common.vo.OfflineFriendsRequestVO;
import com.zhike.common.vo.RosterVO;

public interface FriendsMapper extends BaseMapper<Roster> {
        /**
         * 根据 uid和 friendUid查询好友数量
         *
         * @param uid       uid
         * @param friendUid friendUid
         * @return 数量
         */
        Integer queryFriendsCountByUidFriendUid(@Param("uid") String uid,
                        @Param("friendUid") String friendUid);

        /**
         * 查询用户的好友列表
         *
         * @param uid uid
         * @return 结果
         */
        List<RosterVO> getRosterByUid(@Param("uid") String uid);

        /**
         * 查询用户的好友列表
         * 
         * @param uid
         * @return
         */
        List<RosterVO> getRosterByDeviceNo(@Param("deviceNo") String deviceNo);

        /**
         * 更新好友请求时间
         *
         * @param desc      desc
         * @param time      时间戳
         * @param uid       uid
         * @param friendUid friendUid
         * @return 结果
         */
        Integer updateFriendsRequestTime(@Param("desc") String desc,
                        @Param("time") Long time,
                        @Param("uid") String uid,
                        @Param("friendUid") String friendUid);

        Integer updateFriendsRequestStatus(
                        @Param("uid") String uid,
                        @Param("friendUid") String friendUid,
                        @Param("status") Integer status);

        /**
         * 新增一条好友请求信息
         *
         * @param uid       uid
         * @param friendUid 好友 id
         * @param desc      desc
         * @param ip        ip
         * @param time      时间戳
         * @return 结果
         */
        Integer insertFriendsRequestData(@Param("uid") String uid,
                        @Param("friendUid") String friendUid,
                        @Param("desc") String desc,
                        @Param("time") Long time);

        /**
         * 新增一条好友信息
         *
         * @param uid       uid
         * @param friendUid 好友 id
         * @return 结果
         */
        Integer insertFriendsData(@Param("uid") String uid, @Param("friendUid") String friendUid);

        /**
         * 根据 uid和 fuid查询好友请求数量
         *
         * @param uid       uid
         * @param friendUid friendUid
         * @return 数量
         */
        Integer queryFriendsRequestCountByUidFriendUid(@Param("uid") String uid,
                        @Param("friendUid") String friendUid);

        /**
         * 删除好友请求信息
         *
         * @param uid       uid
         * @param friendUid 好友 id
         * @return 结果
         */
        Integer deleteFriendsRequestData(@Param("uid") String uid, @Param("friendUid") String friendUid);

        /**
         * 根据uid查询好友列表
         *
         * @param uid yid
         * @return 结果
         */
        List<UserRosterVO> queryFriendsList(@Param("uid") String uid);

        /**
         * 删除好友
         *
         * @param myUid     uid
         * @param friendUid 好友 id
         * @return 结果
         */
        Integer deleteFriend(@Param("myUid") String myUid, @Param("friendUid") String friendUid);

        /**
         * 更新好友信息中的备注、描述等的接口
         *
         * @param remark        remark
         * @param mobileNum     mobileNum
         * @param moreDesc      moreDesc
         * @param userUid       userUid
         * @param friendUserUid friendUserUid
         * @return 结果
         */
        Integer updateFriendRemark(@Param("remark") String remark,
                        @Param("moreDesc") String moreDesc,
                        @Param("userUid") String userUid,
                        @Param("friendUserUid") String friendUserUid);

        /**
         * 未处理的加好友请求总数量
         *
         * @param localUid uid
         * @return 结果
         */
        Integer queryUntreatedFriendRequest(@Param("localUid") String localUid);

        /**
         * 加好友的请求数据
         *
         * @param localUid uid
         * @return 结果
         */
        List<OfflineFriendsRequestVO> queryFriendsRequest(@Param("localUid") String localUid);

        /**
         * 查询所有用户好友
         * 
         * @return
         */
        List<RosterVO> queryFriendsAll();

        /**
         * 查询一条好友请求数据
         * 
         * @param uid
         * @param beUserUid
         * @return
         */
        FriendRequestVO selectFriendRequestOne(@Param("uid") String uid, @Param("beUserUid") String beUserUid);
}
